package reflect;

import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Scanner;

/**
 * java的反射机制：
 */
public class ReflectDemo1 {
    public static void main(String[] args) throws ClassNotFoundException {
        /*
           反射的第一步：获取要操作的类的类对象
           java.lang.Class(类对象)
         */
        //获取类对象的方式：
        /*
        //1.通过class获取类对象
        Class cls1 = String.class;
        Class cls2 = ArrayList.class;
        Class cls3 = int.class;

        //2.通过指定类的完全限定名获取一个类对象
        Class cls4 = Class.forName("java.lang.String");
        Class cls5 = Class.forName("java.util.ArrayList");
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入一个类名：");
        String name = scan.nextLine();//nextLine()方法读取一个字符串，包括空格
        Class cls6 = Class.forName(name);
        */
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入一个类名：");
        String name = scan.nextLine();
        Class cls = Class.forName("name");

        System.out.println("获取类的完全限定名：" + cls.getName());
        System.out.println("获取类名：" + cls.getSimpleName());

        Package pack = cls.getPackage();
        System.out.println("获取包名：" + pack.getName());

        Method[] methods = cls.getMethods();
        System.out.println("一共" + methods.length + "个方法");
        for (Method method : methods) {
            System.out.println(method.getName());//获取方法，名
        }
    }
}
